My ultimate goal is getting MS Graph working with LWP and Perl. For better understanding I started out by sandboxing it on the command line with curl. This from a firm believe that if I can get it going on the command line I can get it working anywhere.
So why curl? Well:
- it’s documented rather good.
- It has been around like forever
- and is the absolute no-brainer on doing HTTP (among many other) requests from the command line. There are even libraries to use curl from within a Perl script.
I came up with the following bash script it do just that:
#! /usr/bin/bash token=`curl \ -d grant_type=client_credentials \ -d client_id=[client_id] \ -d client_secret=[client_secret] \ -d scope=https://graph.microsoft.com/.default \ -d resource=https://graph.microsoft.com \ https://login.microsoftonline.com/[tenant_id]/oauth2/token \ | jq -j .access_token` curl -X GET \ -H "Authorization: Bearer $token" \ -H "Content-Type: application/json" \ https://graph.microsoft.com/v1.0/groups \ | jq .
I’ve put two curl commands in a bash script:
- The first is a request for a token which is stored in a variable
- Using this token I make a second request to get a list of groups from the tenant.
You will have to fill in the blanks yourself of course, the things like [client_secret]. The curl output is piped through jq to parse the (JSON) output. Getting a listing of groups is just an example.